package com.utils;

import org.springframework.jdbc.core.RowMapper;

import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MyRowMapper<T> implements RowMapper<T> {
    private Class<T> classz;//不能为空
    public MyRowMapper(Class<T> classz) {
        this.classz = classz;
    }
    public T mapRow(ResultSet rs, int rowNum) throws SQLException {
            T obj=null;
        try {
            //1、根据类的字节码获取对象
             obj = classz.newInstance();
            //2、获取对象中的所有属性
            Field[] declaredFields = classz.getDeclaredFields();
            //3、循环属性给当前属性赋值，值(rs.getObject(属性名))，开放权限
            for (Field field:declaredFields) {
                field.setAccessible(true);
                field.set(obj,rs.getObject(field.getName()));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }
}
